{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最值归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=np.random.randint(0,100,size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([24, 53, 13, 71, 33, 61, 97, 76, 51, 63, 55, 95, 73, 76, 58, 46, 95,\n",
       "       59, 73, 38, 82, 23, 39, 58, 32,  2, 39, 34, 37, 95, 92, 55, 36, 21,\n",
       "       48, 97, 11, 18, 64, 28, 78, 27, 35, 65, 78, 40, 11, 83, 50, 43, 64,\n",
       "       63, 55, 69, 83, 35,  1, 54, 23, 89, 85, 72, 88, 73, 58, 44, 63,  3,\n",
       "       40, 75, 31, 48, 88, 18, 72, 12, 64, 89, 82, 27, 42, 77, 34, 74,  8,\n",
       "       44, 90, 22, 98, 71, 15, 91, 82,  6,  0, 97, 73, 65, 75, 15])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.24489796, 0.54081633, 0.13265306, 0.7244898 , 0.33673469,\n",
       "       0.62244898, 0.98979592, 0.7755102 , 0.52040816, 0.64285714,\n",
       "       0.56122449, 0.96938776, 0.74489796, 0.7755102 , 0.59183673,\n",
       "       0.46938776, 0.96938776, 0.60204082, 0.74489796, 0.3877551 ,\n",
       "       0.83673469, 0.23469388, 0.39795918, 0.59183673, 0.32653061,\n",
       "       0.02040816, 0.39795918, 0.34693878, 0.37755102, 0.96938776,\n",
       "       0.93877551, 0.56122449, 0.36734694, 0.21428571, 0.48979592,\n",
       "       0.98979592, 0.1122449 , 0.18367347, 0.65306122, 0.28571429,\n",
       "       0.79591837, 0.2755102 , 0.35714286, 0.66326531, 0.79591837,\n",
       "       0.40816327, 0.1122449 , 0.84693878, 0.51020408, 0.43877551,\n",
       "       0.65306122, 0.64285714, 0.56122449, 0.70408163, 0.84693878,\n",
       "       0.35714286, 0.01020408, 0.55102041, 0.23469388, 0.90816327,\n",
       "       0.86734694, 0.73469388, 0.89795918, 0.74489796, 0.59183673,\n",
       "       0.44897959, 0.64285714, 0.03061224, 0.40816327, 0.76530612,\n",
       "       0.31632653, 0.48979592, 0.89795918, 0.18367347, 0.73469388,\n",
       "       0.12244898, 0.65306122, 0.90816327, 0.83673469, 0.2755102 ,\n",
       "       0.42857143, 0.78571429, 0.34693878, 0.75510204, 0.08163265,\n",
       "       0.44897959, 0.91836735, 0.2244898 , 1.        , 0.7244898 ,\n",
       "       0.15306122, 0.92857143, 0.83673469, 0.06122449, 0.        ,\n",
       "       0.98979592, 0.74489796, 0.66326531, 0.76530612, 0.15306122])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(x-np.min(x))/(np.max(x)-np.min(x))#最值归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"矩阵\"\"\"\n",
    "X=np.random.randint(0,100,(50,2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "X=np.array(X,dtype=float)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "X[:,0]=(X[:,0]-np.min(X[:,0]))/(np.max(X[:,0])-np.min(X[:,0]))#对第一个特征归一化\n",
    "X[:,1]=(X[:,1]-np.min(X[:,1]))/(np.max(X[:,1])-np.min(X[:1]))#对第二个特征归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x187023faf10>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:,0],X[:,1])#散点图均位于0-1内"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.4391666666666666\n",
      "0.4437369653117685\n"
     ]
    }
   ],
   "source": [
    "#两个特征分别求平均值\n",
    "print(X[:,0].mean())\n",
    "print(X[:,1].mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.299944852682217\n",
      "0.2951309149249608\n"
     ]
    }
   ],
   "source": [
    "print(np.std(X[:,1]))#方差S\n",
    "print(np.std(X[:,0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "均值方差归一化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "X2=np.random.randint(0,100,(50,2))\n",
    "X2=np.array(X2,dtype=float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(X2.shape[1]):#循环将各个维度特征均值方差归一化\n",
    "    X2[:,i]=(X2[:,i]-np.mean(X2[:,i]))/np.std(X2[:,i])\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x18702846880>"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X2[:,0],X2[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
